1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.pounce;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.ghash;
34 import derelict.glib.glist;
35 import derelict.purple.account;
36 import derelict.purple.blist;
37 
38 extern (C):
39 
40 alias _PurplePounce PurplePounce;
41 alias _Anonymous_0 PurplePounceEvent;
42 alias _Anonymous_1 PurplePounceOption;
43 alias void function (_PurplePounce*, _Anonymous_0, void*) PurplePounceCb;
44 
45 enum _Anonymous_0
46 {
47 	PURPLE_POUNCE_NONE = 0,
48 	PURPLE_POUNCE_SIGNON = 1,
49 	PURPLE_POUNCE_SIGNOFF = 2,
50 	PURPLE_POUNCE_AWAY = 4,
51 	PURPLE_POUNCE_AWAY_RETURN = 8,
52 	PURPLE_POUNCE_IDLE = 16,
53 	PURPLE_POUNCE_IDLE_RETURN = 32,
54 	PURPLE_POUNCE_TYPING = 64,
55 	PURPLE_POUNCE_TYPED = 128,
56 	PURPLE_POUNCE_TYPING_STOPPED = 256,
57 	PURPLE_POUNCE_MESSAGE_RECEIVED = 512
58 }
59 
60 enum _Anonymous_1
61 {
62 	PURPLE_POUNCE_OPTION_NONE = 0,
63 	PURPLE_POUNCE_OPTION_AWAY = 1
64 }
65 
66 struct _PurplePounce
67 {
68 	char* ui_type;
69 	PurplePounceEvent events;
70 	PurplePounceOption options;
71 	PurpleAccount* pouncer;
72 	char* pouncee;
73 	GHashTable* actions;
74 	gboolean save;
75 	void* data;
76 }
77 
78 
79 version(Derelict_Link_Static)
80 {
81     extern( C ) nothrow 
82     {
83 	    PurplePounce* purple_pounce_new(const(char)* ui_type, PurpleAccount* pouncer, const(char)* pouncee, PurplePounceEvent event, PurplePounceOption option);
84         void purple_pounce_destroy(PurplePounce* pounce);
85         void purple_pounce_destroy_all_by_account(PurpleAccount* account);
86         void purple_pounce_destroy_all_by_buddy(PurpleBuddy* buddy);
87         void purple_pounce_set_events(PurplePounce* pounce, PurplePounceEvent events);
88         void purple_pounce_set_options(PurplePounce* pounce, PurplePounceOption options);
89         void purple_pounce_set_pouncer(PurplePounce* pounce, PurpleAccount* pouncer);
90         void purple_pounce_set_pouncee(PurplePounce* pounce, const(char)* pouncee);
91         void purple_pounce_set_save(PurplePounce* pounce, gboolean save);
92         void purple_pounce_action_register(PurplePounce* pounce, const(char)* name);
93         void purple_pounce_action_set_enabled(PurplePounce* pounce, const(char)* action, gboolean enabled);
94         void purple_pounce_action_set_attribute(PurplePounce* pounce, const(char)* action, const(char)* attr, const(char)* value);
95         void purple_pounce_set_data(PurplePounce* pounce, void* data);
96         PurplePounceEvent purple_pounce_get_events(const(PurplePounce)* pounce);
97         PurplePounceOption purple_pounce_get_options(const(PurplePounce)* pounce);
98         PurpleAccount* purple_pounce_get_pouncer(const(PurplePounce)* pounce);
99         const(char)* purple_pounce_get_pouncee(const(PurplePounce)* pounce);
100         gboolean purple_pounce_get_save(const(PurplePounce)* pounce);
101         gboolean purple_pounce_action_is_enabled(const(PurplePounce)* pounce, const(char)* action);
102         const(char)* purple_pounce_action_get_attribute(const(PurplePounce)* pounce, const(char)* action, const(char)* attr);
103         void* purple_pounce_get_data(const(PurplePounce)* pounce);
104         void purple_pounce_execute(const(PurpleAccount)* pouncer, const(char)* pouncee, PurplePounceEvent events);
105         PurplePounce* purple_find_pounce(const(PurpleAccount)* pouncer, const(char)* pouncee, PurplePounceEvent events);
106         gboolean purple_pounces_load();
107         void purple_pounces_register_handler(const(char)* ui, PurplePounceCb cb, void function (PurplePounce*) new_pounce, void function (PurplePounce*) free_pounce);
108         void purple_pounces_unregister_handler(const(char)* ui);
109         GList* purple_pounces_get_all();
110         GList* purple_pounces_get_all_for_ui(const(char)* ui);
111         void* purple_pounces_get_handle();
112         void purple_pounces_init();
113         void purple_pounces_uninit();
114     }
115 }
116 else
117 {
118     extern( C ) nothrow 
119     {
120 	    alias da_purple_pounce_new = PurplePounce* function(const(char)* ui_type, PurpleAccount* pouncer, const(char)* pouncee, PurplePounceEvent event, PurplePounceOption option);				
121         alias da_purple_pounce_destroy = void function(PurplePounce* pounce);																														
122         alias da_purple_pounce_destroy_all_by_account = void function(PurpleAccount* account);																										
123         alias da_purple_pounce_destroy_all_by_buddy = void function(PurpleBuddy* buddy);																											
124         alias da_purple_pounce_set_events = void function(PurplePounce* pounce, PurplePounceEvent events);																							
125         alias da_purple_pounce_set_options = void function(PurplePounce* pounce, PurplePounceOption options);																						
126         alias da_purple_pounce_set_pouncer = void function(PurplePounce* pounce, PurpleAccount* pouncer);																							
127         alias da_purple_pounce_set_pouncee = void function(PurplePounce* pounce, const(char)* pouncee);																								
128         alias da_purple_pounce_set_save = void function(PurplePounce* pounce, gboolean save);																										
129         alias da_purple_pounce_action_register = void function(PurplePounce* pounce, const(char)* name);																							
130         alias da_purple_pounce_action_set_enabled = void function(PurplePounce* pounce, const(char)* action, gboolean enabled);																		
131         alias da_purple_pounce_action_set_attribute = void function(PurplePounce* pounce, const(char)* action, const(char)* attr, const(char)* value);												
132         alias da_purple_pounce_set_data = void function(PurplePounce* pounce, void* data);																											
133         alias da_purple_pounce_get_events = PurplePounceEvent function(const(PurplePounce)* pounce);																								
134         alias da_purple_pounce_get_options = PurplePounceOption function(const(PurplePounce)* pounce);																								
135         alias da_purple_pounce_get_pouncer = PurpleAccount* function(const(PurplePounce)* pounce);																									
136         alias da_purple_pounce_get_pouncee = const(char)* function(const(PurplePounce)* pounce);																									
137         alias da_purple_pounce_get_save = gboolean function(const(PurplePounce)* pounce);																											
138         alias da_purple_pounce_action_is_enabled = gboolean function(const(PurplePounce)* pounce, const(char)* action);																				
139         alias da_purple_pounce_action_get_attribute = const(char)* function(const(PurplePounce)* pounce, const(char)* action, const(char)* attr);													
140         alias da_purple_pounce_get_data = void* function(const(PurplePounce)* pounce);																												
141         alias da_purple_pounce_execute = void function(const(PurpleAccount)* pouncer, const(char)* pouncee, PurplePounceEvent events);																
142         alias da_purple_find_pounce = PurplePounce* function(const(PurpleAccount)* pouncer, const(char)* pouncee, PurplePounceEvent events);														
143         alias da_purple_pounces_load = gboolean function();																																			
144         alias da_purple_pounces_register_handler = void function(const(char)* ui, PurplePounceCb cb, void function (PurplePounce*) new_pounce, void function (PurplePounce*) free_pounce);			
145         alias da_purple_pounces_unregister_handler = void function(const(char)* ui);																												
146         alias da_purple_pounces_get_all = GList* function();																																		
147         alias da_purple_pounces_get_all_for_ui = GList* function(const(char)* ui);																													
148         alias da_purple_pounces_get_handle = void* function();																																		
149         alias da_purple_pounces_init = void function();																																				
150         alias da_purple_pounces_uninit = void function();
151     }
152 
153     __gshared
154     {
155 	    da_purple_pounce_new purple_pounce_new;
156 	    da_purple_pounce_destroy purple_pounce_destroy;
157 	    da_purple_pounce_destroy_all_by_account purple_pounce_destroy_all_by_account;
158 	    da_purple_pounce_destroy_all_by_buddy purple_pounce_destroy_all_by_buddy;
159 	    da_purple_pounce_set_events purple_pounce_set_events;
160 	    da_purple_pounce_set_options purple_pounce_set_options;
161 	    da_purple_pounce_set_pouncer purple_pounce_set_pouncer;
162 	    da_purple_pounce_set_pouncee purple_pounce_set_pouncee;
163 	    da_purple_pounce_set_save purple_pounce_set_save;
164 	    da_purple_pounce_action_register purple_pounce_action_register;
165 	    da_purple_pounce_action_set_enabled purple_pounce_action_set_enabled;
166 	    da_purple_pounce_action_set_attribute purple_pounce_action_set_attribute;
167 	    da_purple_pounce_set_data purple_pounce_set_data;
168 	    da_purple_pounce_get_events purple_pounce_get_events;
169 	    da_purple_pounce_get_options purple_pounce_get_options;
170 	    da_purple_pounce_get_pouncer purple_pounce_get_pouncer;
171 	    da_purple_pounce_get_pouncee purple_pounce_get_pouncee;
172 	    da_purple_pounce_get_save purple_pounce_get_save;
173 	    da_purple_pounce_action_is_enabled purple_pounce_action_is_enabled;
174 	    da_purple_pounce_action_get_attribute purple_pounce_action_get_attribute;
175 	    da_purple_pounce_get_data purple_pounce_get_data;
176 	    da_purple_pounce_execute purple_pounce_execute;
177 	    da_purple_find_pounce purple_find_pounce;
178 	    da_purple_pounces_load purple_pounces_load;
179 	    da_purple_pounces_register_handler purple_pounces_register_handler;
180 	    da_purple_pounces_unregister_handler purple_pounces_unregister_handler;
181 	    da_purple_pounces_get_all purple_pounces_get_all;
182 	    da_purple_pounces_get_all_for_ui purple_pounces_get_all_for_ui;
183 	    da_purple_pounces_get_handle purple_pounces_get_handle;
184 	    da_purple_pounces_init purple_pounces_init;
185 	    da_purple_pounces_uninit purple_pounces_uninit;
186     }
187 }